home *** CD-ROM | disk | FTP | other *** search
- {
-
- I have a program that needed to disable Ctl-Break. The program uses the
- CRT unit, and the program also used the Readkey() function and the
- Keypressed() function. In order to keep Ctl-Brk from 'working' I had to
- replace *both* the Readkey and Keypressed functions with my own, because
- those functions, in the TP units, respond to Ctl-Break. I Also had to
- set CheckBreak to false early in the main program routine.
-
- The following _Keypressed() function uses bios interrupt 16h to test
- to see if a key was pressed and a keystroke is in the keyboard buffer.
- It is used just like the TP Keypressed function, and does not process
- (responed to) ctl-break. ( if _keypressed then ... ) }
-
- function _keypressed: Boolean; Assembler;
- asm
- push ds { save TP DS reg }
- push sp { save stack ptr }
- mov ah, 1 { int 16h fcn 1 }
- int 16h { ret zero flag clr if keypressed }
- mov al, 0 { assume false }
- jz @1 { keypressed ? }
- mov al, 1 { set true }
- @1:
- pop sp
- pop ds
- end;
- {
- The following _readkey function uses dos interrupt 21h function 7 to get
- a character from the keyboard buffer. It does not echo the character
- and does not process (respond to) ctl-break. It is used just like the
- TP readkey function. ( c := _readkey; ) }
-
- function _readkey: Char;
- var regs:registers;
- begin
- regs.ah := 7;
- msdos(regs);
- _Readkey := char(regs.al);
- end;